package br.com.cinesystem.persistence;

import br.com.cinesystem.entity.Ator;
import br.com.cinesystem.entity.Filme;
import java.util.ArrayList;
import java.util.List;

public class AtorDao extends Dao {

    public Ator salvar(Ator a)throws Exception{

        abrirConexao();

        stmt = con.prepareStatement("INSERT INTO ator VALUES (null,?)");

        stmt.setString(1, a.getNome());

        stmt.execute();

        stmt = con.prepareStatement("select LAST_INSERT_ID() as id");

        rs = stmt.executeQuery();

        Ator ator = null;

        if(rs.next()){

            ator = new Ator();
            ator.setIdAtor(rs.getInt("id"));
            
        }

        fecharConexao();
        return ator;

    }



    public List<Ator> buscarTodos(Filme f)throws Exception{

        abrirConexao();

        StringBuilder sb = new StringBuilder();
        sb.append("SELECT a.nome");
        sb.append("FROM ator a INNER JOIN filmeatores fa ");
        sb.append("ON fa.id_Ator = a.idAtor ");
        sb.append("WHERE fa.id_Filme=? ORDER BY nome");

        stmt = con.prepareStatement(sb.toString());
        stmt.setInt(1, f.getIdFilme());

        rs = stmt.executeQuery();

        List<Ator> lista = new ArrayList<Ator>();

        while (rs.next()){

            Ator ator = new Ator();

            ator.setNome(rs.getString("nome"));

            lista.add(ator);
        }

        fecharConexao();
        return lista;
    }

    public Ator verificarAtor(Ator a)throws Exception{

        abrirConexao();

        stmt = con.prepareStatement("SELECT * FROM ator WHERE nome=?");

        stmt.setString(1, a.getNome());

        rs = stmt.executeQuery();

        Ator ator = null;

        if(rs.next()){

            ator = new Ator();

            ator.setIdAtor(rs.getInt("idAtor"));
            ator.setNome(rs.getString("nome"));

        }

        fecharConexao();
        return ator;

    }

    public Filme verificarAtorFilme(Filme f,Ator a)throws Exception{

        abrirConexao();
        StringBuilder sb = new StringBuilder();

        sb.append("SELECT a.nome, a.idAtor, fa.id_Filme ");
        sb.append("FROM ator a INNER JOIN filmeatores fa ");
        sb.append("ON a.idAtor = fa.id_Ator ");
        sb.append("WHERE fa.id_Ator=? and id_Filme=?");

        stmt = con.prepareStatement(sb.toString());

        stmt.setInt(1, a.getIdAtor());
        stmt.setInt(2, f.getIdFilme());

        rs = stmt.executeQuery();

        Ator ator = null;
        Filme filme = null;

        if(rs.next()){

            ator = new Ator();
            filme = new Filme();
            filme.setAtorList(new ArrayList<Ator>());

            ator.setIdAtor(rs.getInt("idAtor"));
            ator.setNome(rs.getString("nome"));

            filme.setIdFilme(rs.getInt("id_Filme"));
            filme.getAtorList().add(ator);
        }

        fecharConexao();
        return filme;

    }
}
